package com.example.test1

object Test1 {
  /**
   * 根据瓶盖和空瓶数量递归得到能兑换的啤酒数
   *
   * @param cap    瓶盖数量
   * @param empty  空瓶数量
   * @param bottle 兑换到的啤酒数量
   * @return 一轮可以兑换到的啤酒数量
   */
    def getBeerNum(cap:Int, empty:Int, bottle:Int):Int = {
      if (cap < 5 && empty < 3 )
        return bottle

      //空瓶可换的啤酒数
      val a:Int = empty /3
      //空瓶换完剩下的空瓶数
      val b:Int = empty % 3
      //瓶盖可换的啤酒数
      val c:Int = cap /5
      //瓶盖换完剩下的瓶盖数
      val d:Int = cap % 5
      println(s"通过瓶盖和空瓶兑换了${a + c +bottle}瓶啤酒，" +
        s"瓶盖还有:${a + c + d}个, 空瓶还有:${a + b + c}个！"
        )
      getBeerNum(a + c + d, a + b + c, a + c +bottle)

    }

    def main(args: Array[String]): Unit = {
      // 100块用于全部买酒
      val initNum:Int = 100/2
      val result = getBeerNum(initNum, initNum, 0)
      println(s"一共可以喝${initNum + result}瓶啤酒")
    }
}
